package com.mjf.scala.chapter02

/**
 * 强转面试题
 *
 * 正数原码反码补码相同
 * 负数原码到反码：符号位不变，其余为取反
 * 负数反码到补码：+1
 */
object Scala08_DataType {

  def main(args: Array[String]): Unit = {

     /*
     128在Scala中默认是Int类型，应该右32位
     原码：00000000 00000000 00000000 10000000
     反码：00000000 00000000 00000000 10000000
     补码：00000000 00000000 00000000 10000000
     对Int数据进行截取，截取为Byte类型，剩8位   ===>10000000  约定当前值为范围最小值-128
     */
    var b : Byte = 128.toByte   // -128

    /*
    130在Scala中默认是Int类型，应该右32位
    原码：00000000 00000000 00000000 10000010
    反码：00000000 00000000 00000000 10000010
    补码：00000000 00000000 00000000 10000010
    对Int数据进行截取，截取为Byte类型，剩8位   ===>补码：10000010 -> 反码：11111101 -> 原码：11111110
    */
    var c : Byte = 130.toByte   // -126

    /*
    -130在Scala中默认是Int类型，应该右32位
    原码：10000000 00000000 00000000 10000010
    反码：11111111 11111111 11111111 01111101
    补码：11111111 11111111 11111111 01111110
    对Int数据进行截取，截取为Byte类型，剩8位   ===>补码：01111110 -> 反码：01111110 -> 原码：01111110
    */
    var d : Byte = (-130).toByte   // 126

    println(b,c,d)

  }

}
